/*
 *  author: Gregorovichz Carlos Rossi
 *  date: 15/05/2010
 */
function gestionarDependencia(){
    var chkEstadoDependencia = new Ext.grid.CheckColumn({
        header: "Activo",
        dataIndex: 'bdepeActivo',
        align:'center',
        width: 55
    });
    chkEstadoDependencia.onMouseDown=function(e,t){};
    var dsDependencia = new Ext.data.GroupingStore({
        url:"lista-dependencias",
        reader: new Ext.data.JsonReader({
            root: 'dependencia',
            totalProperty: 'totalcount',
            fields:
            [
            {
                name: "ndepeIdentificador",
                type: "integer"
            },
            {
                name: "bdepeActivo",
                type: "boolean"
            },{
                name: "cdepeNombre",
                type: "string"
            },
            {
                name: "cdepeSiglas",
                type: "string"
            },
            {
                name: "ddepeFechaCreacion",
                type: "string"
            },
            {
                name: "ndepeAreaIdentificador",
                type: "integer"
            },
            {
                name: "cdepeDescripcionArea",
                type: "string"
            }
            ]
        }),
        sortInfo:{
            field: 'cdepeDescripcionArea',
            direction: "ASC"
        },
        groupField: 'cdepeDescripcionArea'
    });
    dsDependencia.on("exception",function(proxy, type, action, options, response, arg){
        Ext.MessageBox.alert("Error","Sucedio un error al cargar los perfiles"+response.responseText);
    });
    var grdDependencia=new Ext.grid.GridPanel({
        store: dsDependencia,
        loadMask: false,
        height:480,
        border:true,
        frame: false,
        plugins:[new Ext.ux.grid.Search({
            mode:'local',
            iconCls:false,
            minLength:2,
            width: 350
        })],
        columns:
        [
        {
            header: "Dependencia",
            dataIndex: "cdepeNombre",
            width: 400,
            sortable:true
        },
        {
            header: "Dependencia Superior",
            dataIndex: "cdepeDescripcionArea",
            hidden :true,
            width: 0,
            sortable:true
        },{
            header: "Siglas",
            dataIndex: "cdepeSiglas",
            width:50,
            sortable:true
        },chkEstadoDependencia
        ],
        tbar:[{
            text:'Agregar',
            iconCls:'icon-add',
            handler: function(){
                mantenerDependencia(true);
            }
        }, '-', {
            text:'Modificar',
            iconCls:'icon-modify',
            handler: function(){
                mantenerDependencia(false);
            }
        },'-',{
            text:'Eliminar',
            iconCls:'icon-delete',
            handler: function(){
                eliminarDependencia();
            }
        }],
        view: new Ext.grid.GroupingView({
            forceFit:true,
            emptyText: 'No tiene oficinas creadas.',
            groupTextTpl : '{text} ({[values.rs.length]} {[values.rs.length > 1 ? "Oficinas" : "Oficina"]})'
        })
    });
    grdDependencia.on("rowclick",function(grid,rowIndex,e){
        registroDependencia=grid.getStore().getAt(rowIndex);
    });
    var seleccionPerfil=grdDependencia.getSelectionModel();
    seleccionPerfil.on("rowselect",function(sm,fila,registro){
        registroDependencia=registro;
    });
    dsDependencia.load();
    var win = new Ext.Window({
        title:'Mantenimiento de Dependencias',
        closeAction:'destroy',
        width:1055,
        x:0,
        y:0,
        shim:false,
        maximizable:false,
        resizable: false,
        animCollapse:false,
        layout: 'fit',
        items:grdDependencia
    });
    win.show();
}

function mantenerDependencia(nuevo){
    var frmGestionarDependencia =new Ext.Panel({
        bodyBorder:true,
        height:400,
        bodyStyle: "background-color:#DFE8F6; border:0"
    });
    new Ajax.Request("frmGestionarDependencia.html",{
        method: "post",
        asynchronous:false,
        onSuccess: function(transport){
            frmGestionarDependencia.html=transport.responseText;
            winMantenerDependencia= new Ext.Window({
                title: (nuevo ? 'Agregar ' : 'Modificar ') + 'Dependencia',
                closeAction:'destroy',
                width:420,
                height:180,
                items:[frmGestionarDependencia],
                shim:false,
                modal:true,
                maximizable:true,
                minimizable:false,
                animCollapse:false,
                resizable:false,
                constrainHeader:true,
                bbar:[{
                    text:'Grabar',
                    iconCls:'icon-save',
                    handler: function(){
                        nuevo?insertarDependencia():actualizarDependencia();
                    }
                }, '-', {
                    text:'Cancelar',
                    iconCls:'icon-cancel',
                    handler: function(){
                        winMantenerDependencia.destroy();
                    }
                }]
            });
            winMantenerDependencia.show();
            cargarDependencias();
            winMantenerDependencia.focus();
            if (!nuevo){
                $("frmgestionardependencia").ndepeIdentificador.value = registroDependencia.data.ndepeIdentificador;
                $("frmgestionardependencia").cdepeNombre.value = registroDependencia.data.cdepeNombre;
                $("frmgestionardependencia").cdepeSiglas.value = registroDependencia.data.cdepeSiglas;
                $("frmgestionardependencia").bdepeActivo.value = registroDependencia.data.bdepeActivo;
                registroDependencia.data.bdepeActivo?$("bdepeActivo").checked=true:$("bdepeActivo").checked=false;
                $("frmgestionardependencia").ndepeAreaIdentificador.value = registroDependencia.data.ndepeAreaIdentificador;
            }
        },
        onFailure:function(t){
            Information("Aviso del Sistema","Sucedio un error al intentar cargar el formulario"+t.responseText);
        }
    });
}

function insertarDependencia(){
    new Ajax.Request("dependencia!agregar",{
        method:"post",
        parameters: $("frmgestionardependencia").serialize(),
        onSuccess: function(transport){
            var operacion =transport.responseText.evalJSON();
            Information("Aviso del Sistema",operacion.mensaje);
            winMantenerDependencia.destroy();
            gestionarDependencia();
        },
        onFailure:function(transport){
            Information("Aviso del Sistema","Sucedio un error al intentar cargar el formulario"+transport.responseText);
        }
    });
}

function actualizarDependencia(){
    new Ajax.Request("dependencia!modificar",{
        method:"post",
        parameters: $("frmgestionardependencia").serialize(),
        onSuccess: function(transport){
            var operacion =transport.responseText.evalJSON();
            Information("Aviso del Sistema",operacion.mensaje);
            winMantenerDependencia.destroy();
            gestionarDependencia();
        },
        onFailure:function(transport){
            Information("Aviso del Sistema","Sucedio un error al intentar cargar el formulario"+transport.responseText);
        }
    });
}

function eliminarDependencia(){
    Ext.MessageBox.confirm("Confirmación", "Eliminar Registro", function(button){
        if(button=="yes"){
            new Ajax.Request("dependencia!eliminar",{
                method:"post",
                parameters:{
                    ndepeIdentificador: registroDependencia.data.ndepeIdentificador
                },
                onSuccess: function(transport){
                    var operacion = transport.responseText.evalJSON();
                    Information("Aviso del Sistema",operacion.mensaje);
                    gestionarDependencia();
                },
                onFailure: function(transport){
                    Information("Aviso del Sistema","Sucedio un error al intentar eliminar el registro"+transport.responseText);
                }
            });
        }
    });
}

function cargarDependencias(){
    new Ajax.Request("lista-dependencias",{
        method: "post",
        asynchronous:false,
        onSuccess: function(transport){
            var eiSelect = $("ndepeAreaIdentificador");
            removeAllOptions(eiSelect);
            var lstDependencias = transport.responseText.evalJSON();
            eOption = document.createElement("option");
            eOption.setAttribute("value", "0");
            eOption.appendChild(document.createTextNode("--Seleccione Area--"));
            eiSelect.appendChild(eOption);
            for (i=0;i<lstDependencias.dependencia.length;i++){
                eOption = document.createElement("option");
                eOption.setAttribute("value", lstDependencias.dependencia[i].ndepeIdentificador);
                eOption.appendChild(document.createTextNode(lstDependencias.dependencia[i].cdepeNombre));
                eiSelect.appendChild(eOption);
            }
        }
    });
}